

import os
import json
import pandas as pd

#  JSON 转 Excel
#convert_to_json = True  # True: JSON 转 Excel, False: Excel 转 JSON
#json_folder_path = r'D:\dage\stg_client\assets\RisingFortunes\i18n\label'  # JSON 文件夹路径
#output_folder = r'D:\dage\脚本\output'  # 输出文件夹路径

# Excel 转 JSON
convert_to_json = False  # True: JSON 转 Excel, False: Excel 转 JSON
excel_folder_path = r'D:\dage\脚本\excel'  # Excel 文件夹路径
output_folder = r'D:\dage\脚本\output'  # 输出文件夹路径

sheet_name = "theme021"  # 自定义 Sheet 名
# 创建输出目录（如果不存在）
os.makedirs(output_folder, exist_ok=True)

# 读取 JSON 文件
def load_json(file_path):
    with open(file_path, 'r', encoding='utf-8') as file:
        return json.load(file)

# 获取文件夹中所有的指定扩展名文件
def get_files_by_extension(folder_path, extension):
    return [f for f in os.listdir(folder_path) if f.endswith(extension)]

# JSON 转 Excel（合并多个 JSON 文件到一个 Excel 文件）
def json_to_excel_combined(json_folder, output_folder, sheet_name):
    json_files = get_files_by_extension(json_folder, '.json')
    if not json_files:
        raise FileNotFoundError(f"文件夹 {json_folder} 中没有找到 JSON 文件！")

    # 加载所有 JSON 文件数据
    json_data = {}
    for json_file in json_files:
        file_path = os.path.join(json_folder, json_file)
        json_data[json_file] = load_json(file_path)

    # 假设所有 JSON 文件的键结构相同，以第一个文件为基准
    keys = list(json_data[next(iter(json_data))].keys())

    # 构建数据列表
    data = []
    for key in keys:
        row = [key]  # 第一列为序号
        for file_name, content in json_data.items():
            row.append(content.get(key, ''))  # 获取对应 key 的值
        data.append(row)

    # 创建列名，去掉 .json 后缀
    columns = ["序号"] + [os.path.splitext(file_name)[0] for file_name in json_data.keys()]
    df = pd.DataFrame(data, columns=columns)

    # 拼接输出 Excel 文件路径
    output_file = os.path.join(output_folder, f"{sheet_name}.xlsx")

    # 保存到 Excel
    with pd.ExcelWriter(output_file, engine='openpyxl') as writer:
        df.to_excel(writer, index=False, sheet_name=sheet_name)

    print(f"合并后的 Excel 文件已保存为: {output_file}")

# Excel 转 JSON（批量处理多个 Excel 文件）
def excel_to_json(excel_folder, output_folder, sheet_name):
    excel_files = get_files_by_extension(excel_folder, '.xlsx')
    if not excel_files:
        raise FileNotFoundError(f"文件夹 {excel_folder} 中没有找到 Excel 文件！")

    for excel_file in excel_files:
        try:
            file_path = os.path.join(excel_folder, excel_file)
            df = pd.read_excel(file_path, sheet_name=sheet_name)

            # 遍历列生成 JSON 文件
            for col in df.columns[1:]:  # 跳过第一列 "序号"
                json_data = {row['序号']: row[col] for _, row in df.iterrows()}
                output_json_path = os.path.join(output_folder, f"{col}.json")

                with open(output_json_path, 'w', encoding='utf-8') as json_file:
                    json.dump(json_data, json_file, ensure_ascii=False, indent=4)
                print(f"{col} 的 JSON 文件已保存为: {output_json_path}")
        except Exception as e:
            print(f"错误: 处理 Excel 文件 {excel_file} 时出错 - {e}")


#JSON 转 Excel, False: Excel 转 JSON
# 主逻辑
if convert_to_json:
    try:
        print(f"正在将 JSON 文件从目录 {json_folder_path} 转换为合并的 Excel 文件...")
        json_to_excel_combined(json_folder_path, output_folder, sheet_name)
    except Exception as e:
        print(f"发生错误: {e}")
else:
    try:
        print(f"正在将 Excel 文件从目录 {excel_folder_path} 转换为 JSON 文件...")
        excel_to_json(excel_folder_path, output_folder, sheet_name)
    except Exception as e:
        print(f"发生错误: {e}")









# import os
# import json
# import pandas as pd

# sheet_name = "大哥"  # 自定义的 Sheet 名称

# # 设置文件夹路径
# folder_path = r'D:\dage\脚本\label'  # 使用原始字符串路径，避免反斜杠转义
# # 保存到 Excel 文件并设置 Sheet 名称
# output_folder = r'D:\dage\脚本\cc'  # 输出文件夹路径

# output_file_name = sheet_name+".xlsx"  # 输出文件名
# output_path = os.path.join(output_folder, output_file_name)  # 拼接完整路径

# # 读取 JSON 文件
# def load_json(file_path):
#     with open(file_path, 'r', encoding='utf-8') as file:
#         return json.load(file)

# # 获取文件夹中所有的 .json 文件
# def get_json_files(folder_path):
#     return [f for f in os.listdir(folder_path) if f.endswith('.json')]

# # 从文件夹读取所有 JSON 文件
# def load_all_json_from_folder(folder_path):
#     files = get_json_files(folder_path)
#     json_data = {}
#     for file_name in files:
#         file_path = os.path.join(folder_path, file_name)
#         json_data[file_name] = load_json(file_path)
#     return json_data



# # 读取文件夹中的所有 JSON 文件
# json_data = load_all_json_from_folder(folder_path)

# # 假设 JSON 文件内容结构相同，我们以第一个文件的键作为参考
# keys = list(json_data[next(iter(json_data))].keys())

# # 创建数据列表
# data = []
# for key in keys:
#     row = [key]  # 第一列为序号
#     for file_name, content in json_data.items():
#         row.append(content.get(key, ''))  # 获取对应 key 的值
#     data.append(row)

# # 创建列名，去掉 .json 后缀
# columns = ["序号"] + [os.path.splitext(file_name)[0] for file_name in json_data.keys()]
# df = pd.DataFrame(data, columns=columns)

# # 使用 ExcelWriter 来设置 sheet 名称
# with pd.ExcelWriter(output_path, engine='openpyxl') as writer:
#     df.to_excel(writer, index=False, sheet_name=sheet_name)

# print(f"文件已保存为: {output_path}，Sheet 名称为: {sheet_name}")